package org.ch02.test09.demo01;

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

/**
 *  内省操作
 *  BeanInfo:JavaBean对象的封装
 *  PropertyDescriptor(属性描述器):JavaBean对象的属性封装
 *  MethodDescriptor(方法描述器):JavaBean对象的方法封装
 * @author ZJL
 * @date 2025-03-24
 */
public class MainTest {
    public static void main(String[] args) throws Exception {
        // 第一：通过 Introspector 工具类
        // 获取要操作的 JavaBean 对象的 BeanInfo 对象
        //BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);

        BeanInfo beanInfo = Introspector.getBeanInfo(Person.class,Object.class);
        // 第二：基于 BeanInfo 对象，实现相关的操作
        // 属性（setter/getter） 进行读、写操作
        PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
        // 打印输出 JavaBean 对象的属性数量
        System.out.println("属性数量："+propertyDescriptors.length);
        for (PropertyDescriptor property : propertyDescriptors) {
            System.out.println("属性名称："+property.getName());
        }
    }
}
